package xkp.lesson4;

import xkp.lesson1.Person;

import java.util.HashMap;
import java.util.HashSet;

public class TestHashMap {
    public static void main(String[] args) {
        //HashMap<String,Object> hashMap1 = new HashMap<>();
        HashMap<Person,Object> hashMap2 = new HashMap<>();
        Person person1 = new Person("张三",20);
        Person person2 = new Person("李四",22);
        Person person3 = new Person("张三",20);
        Object obj1 = new Object();
        Object obj2 = new Object();
        Object obj3 = new Object();
        hashMap2.put(person1,obj1);
        hashMap2.put(person2,obj2);
        hashMap2.put(person3,obj3);
        //在Person中目前没有重写hashcode()和equals()方法
        System.out.println(person1.hashCode());
        System.out.println(person2.hashCode());
        System.out.println(person3.hashCode());
        //native关键字 是指本地方法接口 JNI   java native interface
        //表示该方法实现对应的是一个c语言函数,此处不纠结JNI的底层实现原理(相对比较复杂)
        //目前因为每一个key都不一样，所以此处三个对象分别放在三个数组元素中

        //如果重写了hashcode()方法，此时person1和person3的hashcode一致
        //但是person1和person3的equals()比较的结果是false
        System.out.println(person1.equals(person3));


        //现在又重写了Person中的equals()方法
        //次吃person1和persaon3的hashcode一致，equals()返回true

        HashSet<Person> personHashSet = new HashSet<>();
        personHashSet.add(new Person("张三",123));
        personHashSet.add(new Person("张三",123));
        //数据结构
        //1、数组  链表  队列   栈  树--(二叉树是重点)
        // 图(比较复杂)----经典算法 深度优先于广度优先 搜索引擎会用到这两种算法
    }
}
